/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Red_Neuronal2;

/**
 *
 * @author miguel mora
 */
public class Red_neuronal2 extends Thread{

   
    /**
     * @param args the command line arguments
     */
    static double factorA= 0.5, resultado=0;
    double pesos[];
    double salidas[];
    double entradas[][];
    boolean cumple=false;
   
    public static void main(String[] args) {
        Red_neuronal2 neurona1 = new Red_neuronal2(3);
        neurona1.evaluar();
       
    }
   
    Red_neuronal2(int entradas ){
   
    this.entradas = new double[entradas][(int) Math.pow(2,(entradas))];  
    this.pesos = new double [entradas];
    this.salidas = new double [entradas];
   
    }
    void evaluar(){
       
        for (int fila = 0; fila < this.entradas[0].length; fila++) {
            for (int columna = 0; columna < this.entradas.length; columna++) {
                resultado = resultado + (this.entradas[fila][columna] * this.pesos[fila]);
            }
            if (resultado<0 && pesos[fila]<0)
                cumple=true;
                else if (resultado>0 && pesos[fila]>0)
                cumple=true;
            else{
                 cumple= false;
                 System.out.println("No cumplio en la fila : "+fila);
                 System.out.println("Se debe recalcular");
                 recalcular_pesos(fila);
                 break;
                }
        }
    }
   
    void recalcular_pesos(int fila) {
       
        System.out.println("Filas :"+this.entradas[0].length);
        System.out.println("Columnas :"+this.entradas.length);
       
        for (int columna = 0; columna < this.entradas.length; columna++) {
            this.pesos[columna] = this.pesos[columna] + (2 * factorA * this.entradas[columna][fila] * salidas[columna]);
            System.out.println(columna+" "+this.pesos[columna]);
        }
   
    }   
       /* pendiente desarrollo
    void llenar (){
   
       int saltos =1, aux=0;
    for (int columna = 0; columna < this.entradas.length; columna++) {
        while(aux==saltos)
            for (int fila = 0; fila < this.entradas[0].length; fila++) {
            this.entradas[columna][fila]=-1;
            aux++;
            }
        saltos= saltos+saltos;
        }
   
    }
    * */
   
}